It is known in the art to use different keyboards or keypads for different applications. For example, a telephone keypad differs from a calculator keypad primarily in the order of the keys. That is, the telephone keypad has numerals increasing in a left-to-right, top-to-bottom order and the calculator keypad has numerals increasing in a left-to-right, bottom-to-top order. Other examples of differing keyboard or keypad layouts include keyboards with different function keys and different languages.
In prior art systems, the different keyboard layouts required distinct keyboards or only permitted toggling between two predefined keyboard layouts. If a system required a numeric keypad of a keyboard to be used as the telephone keypad, then the keypad could only be used in the telephone keypad layout or the keypad layout must be toggled from one layout to the other. Any modification to keypad layout other than toggling between two layouts needed to be performed at the computer system receiving key information from a keypad. Any remapping of keys on the keypad required the computer system to remap the key information from one key layout to another. The prior approach adds complexity to the computer system and consumes additional computing resources of the computing system in order to perform the key mapping. Software, i.e., the operating system, on the computer system is required to monitor key information received from the keyboard and perform a remapping for each received key information. Additionally, use of the toggling approach limits the flexibility of the keypad to two predefined layouts in the keypad.
Another problem in prior art systems is that some keyboards have keys that are “double-high” or “double-wide.” In such keyboards, two keys on the keyboard are replaced by a single larger key where two physical plungers under the large key must report a single value when either or both of the plungers are pressed. An example of a double-wide key is the space bar on a typical keyboard.
It is known in the art to connect keyboards, keypads, or other peripheral devices, to a computer by using different physical or logical connections. If the universal serial bus (USB) is the connection mechanism, key manipulation information is formed into packets with certain common USB characteristics and other characteristics specific to key manipulation, e.g., information identifying which key was manipulated or pressed.
The general protocol for transmitting data over USB is defined in specifications licensed by the USB Implementer's Forum (USBIF) or published by the USB device working group (DWG) on the public Web site, i.e., http://www.usb.org. Existing USB protocol definitions permit many different ways of transmitting data. For example, the USBIF defines four types of data transmission: control, interrupt, bulk, and isochronous. Each type of data transmission includes specific characteristics. A USB device may transmit data using one or more of the data transmission types, also known as endpoint types.
The USB DWG has defined several classes of devices. Each class uses a specified set of the above described endpoint types. Each class further specifies the format of the data to be transmitted. One such defined class is the human interface device (HID) class. The HID class, as defined by the USB DWG and specified in the Device Class Definition for Human Interface Devices (HID), hereinafter the HID, specification, version 1.11 published Jun. 27, 2001 by the USBIF and available from http://www.usb.org, specifies some, but not all, of the characteristics of the transmitted data. More particularly, the HID class specifies a mechanism by which a device designer can provide extensions to the HID specification. These extensions are called usages, and a HID class device sends and receives data using either published, pre-defined usages, privately invented usages, or a combination of public and private usages. Furthermore, a HID class device formats data in a manner causing these usages to have specific, useful meaning to the host computer.
However, the HID Specification does not provide a capability to switch or modify keyboard layouts.
A specific example of keyboard layout mapping in the prior art is now provided to detail the importance of providing a mechanism for modifying the keyboard layout without requiring replacement of the keyboard. Although the example describes a retail scenario, the below-described present invention is not to be limited to such an implementation. There are numerous HIDs, scenarios, and implementations which could benefit from the ability to receive and update keyboard layout or matrix information.
It is known in the art to generate key manipulation information from a keyboard responsive to a user manipulating keys on a keyboard connected to a computer. As the user manipulates or clicks keys, information identifying the manipulated key is transferred to the computer.
A typical retail checkout stand 100 is now described with reference to FIG. 1. A customer (not shown) places items, e.g., grocery item 102, to be purchased on a conveyor belt 104. A cashier or clerk 106 moves grocery item 102 past a bar code scanner 108 to scan a bar code 110 on the grocery item to identify the item to be purchased by the customer. The scanner 108 transmits a signal representing the scanned bar code 110 to a computer system 112 (dashed line) located inside a cabinet 114 forming a part of checkout stand 100. In an alternate embodiment, the computer system 112 may be located remote from checkout stand 100 and send and receive signals over a network connection to the checkout stand.
If the item 102 does not have a bar code 110, or if the bar code scanner is unable to scan the bar code, clerk 106 must manually enter the bar code for the item using a keyboard 116. Clerk 106 manipulates keys on keyboard 116, connected to computer system 112, to provide the bar code information to the computer system.
Upon receipt of the bar code information, from either keyboard 116 or bar code scanner 108, computer system 112 performs a lookup to identify the item 102 and retrieves item information, e.g., item name and price information from memory.
Computer system 112 stores purchased item information and accumulates a total purchase price for the items in memory. The purchased item information and cumulative total purchase price are transmitted to a display 118 (described in detail below) for display to the customer and clerk 106. The item information is additionally transmitted to a receipt printer 120 for printing a receipt 122 to be provided to the customer at the completion of the transaction.
After the clerk 106 has scanned or manually entered (via keyboard 116) item information for all items, the customer tenders an amount of money to the clerk in payment. The money tendered may be in the form of cash, check, or debit or credit via a card reader 124 attached to checkout stand 100. Additionally, the customer may tender coupons, or other forms of payment to clerk 106. Card reader 124 is a typical card reader as is known to persons of skill in this art.
In operation, and with reference to FIG. 1, a clerk 106 uses a keyboard 116 to enter bar code information from items to be purchased. In some instances, the clerk enters item information directly, e.g., item type and price information. As the user manipulates the keys on the keyboard 116, the computer system 112 receives a signal from the keyboard providing key information indicating which key was pressed. If the keyboard includes double-high or double-wide keys, then computer system 112 receives plural signals from keyboard 116 and must determine if a double-high or double-wide key was pressed.
If a keyboard having a different key layout has replaced the existing keyboard, e.g., due to failure of the keyboard, error on the part of personnel, or other condition, then computer system 112 must be reconfigured to properly understand key information received from the new keyboard. Therefore, there is a need in the art for a method and apparatus enabling the modification of a keyboard layout without requiring replacement of the keyboard.